<?php
/*
 PAGES.INC.PHP by martin $ 2009/09/29 23:14:07
*/

checkADMIN();

$aim = isset($aim) ? $aim : g_('aim');

$page_ext = '.txt'; // 新規ページの拡張子
$ini_file = OD.'pages.ini.php';
$ini_temp = OD.'pagetemplate.inc';
include_once($ini_file); # get array::$PAGES_LIST

$header = $body = '';

if($aim != ''){ # 指定ページの表示
 $page_file = PAGE_DIR.$aim.$page_ext;
 if(is_file($page_file)){
  $body = get_file_content($page_file);
  $body = outputPage($body, $aim);
 } else {
  $body = '<h4 class="alert center" style="margin:40px auto;">どうもそのページはないようです。。</h4>'.NL;
 }
 return $DIVISION['body'] .= $header.$body;
}

/* 実行エリア */
if(array_key_exists('save', $_POST)){ # ページの編集保存
 $page_file = PAGE_DIR.p_('pageName').$page_ext;
 $db = DB.'images.db';
 $mod_imgCache = false;
 $images_cache = is_file($db) ? file($db) : array();
 $uid = p_('UID');
 if(is_file($page_file)){
  $page_area = p_('page_area', 1);
  // via Upload and/or Unlinked images: PIX/\d{9,}_$_id_image.jpg -> PIX/$_id_image.jpg
  if(preg_match_all("|(".IMG_DIR."(\d{9,})_${UID}_(.+?))\"|", $page_area, $mt_imgs)){
   $len = count($mt_imgs[1]);
   for($m=0; $m < $len; $m++){
    $new = str_replace(IMG_DIR.$mt_imgs[2][$m].'_', IMG_DIR, $mt_imgs[1][$m]);
    rename($mt_imgs[1][$m], $new);
    $new1 = str_replace(IMG_DIR, IMG_DIR.THUMB1, $mt_imgs[1][$m]); // s1 dir
    if(is_file($new1)) rename($new1, str_replace(THUMB1.$mt_imgs[2][$m].'_', THUMB1, $new1) );
    $new2 = str_replace(IMG_DIR, IMG_DIR.THUMB2, $mt_imgs[1][$m]); // s2 dir
    if(is_file($new2)) rename($new2, str_replace(THMB2.$mt_imgs[2][$m].'_', THUMB2, $new2) );
    $page_area = str_replace($mt_imgs[1][$m], $new, $page_area);
    foreach ($images_cache as $n=>$I){
     if(strstr($I, $mt_imgs[2][$m]) && strstr($I, $mt_imgs[3][$m])){
      $parts = explode('|', $I);
      $parts[0] = $uid; $parts[2] = $mt_imgs[3][$m]; $parts[6] = $parts[7] = '';
      $images_cache[$n] = implode('|', $parts);
      $mod_imgCache = TRUE;
      break;
     }
    } # foreach
   } # for-loop
  }
  preg_match_all('{<img src="(.+?)" .+?/>}', $page_area, $imgs_list); $imgs_list = $imgs_list[1];
  preg_match_all('{\[media:(.+?):.+?\]}', $page_area, $movs_list); $movs_list = $movs_list[1];
  rewrite($page_file, $page_area);
  if($mod_imgCache){
   update_images_cache($images_cache);
   rewrite($db, $images_cache);
   unset($images_cache);
  }
  $new_list = array();
  foreach ($PAGES_LIST as $M){
   list($uid,,$name, $enc, $ontop) = explode('|', $M);
   if($enc == p_('pageName')){
    $new_list[] = $uid.'|'.time().'|'.$name.'|'.$enc.'|'.$ontop.'|';
   } else $new_list[] = $M;
  }
  rewrite_ini($ini_file, $new_list);
  $PAGES_LIST = $new_list;
  update_cache(array('pages'));
  showMessage('ページを更新しました');
 } else {
  showMessage('ページ更新に失敗しました');
 }
}

if(($target=p_('delete'))!=''){ # ページの削除
 if(is_file($f=PATH.PAGE_DIR.$target.$page_ext)){
  $content = get_file_content($f);
  unlink($f);
 } else return $DIVISION['body'] .= '<p class="result" style="margin-top: 100px;">指定されたページが見つかりません</p>'.NL;
 $new_list = array();
  foreach ($PAGES_LIST as $M){
   list(,,,$fname) = explode('|', $M);
   if($fname==$target) continue;
   $new_list[] = $M;
  }
  rewrite_ini($ini_file, $new_list);
  $PAGES_LIST = $new_list;
  refresh_page('admin.php?mode=pages&amp;sub=modify', 1200);
  preg_match_all('{<img src="(.+?)" .+?/>}', $content, $mt); $imgs_list = $mt[1];
  preg_match_all('{\[media:(.+?):.+?\]}', $content, $mt); $media_list = $mt[1];
  if(!empty($imgs_list))  mod_images_DB($imgs_list);
  if(!empty($media_list)) mod_images_DB($media_list);
  update_cache(array('pages'));
  showMessage('ページを削除しました');
}

if(p_('new_page') != ''){ # 新規ページの作成実行
 if(ADMIN != TRUE) _header('admin.php');
 $pageName = p_('new_page');
 foreach ($PAGES_LIST as $M){
  list(,,$name, $fname) = explode('|', $M);
  if($name == $pageName || $fname == $pageName){
   refresh_page('admin.php?mode=pages&sub=create');
   showMessage('そのページ名はすでに存在します。別名を。');
  }
 }
 $uid = time();
 $PAGES_LIST[] = $uid.'|'.$uid.'|'.$pageName.'|'.url_encode($pageName).'|0|';
 rewrite_ini($ini_file, $PAGES_LIST);
 rewrite(($newPage=PAGE_DIR.url_encode($pageName).$page_ext), '');
 if(is_file($newPage)){
  update_cache(array('pages'));
  showMessage('新しくページを追加しました');
 } else showMessage('ページ作成に失敗しました');
}

if(p_('rename') != ''){ # ページ名の変更
 if(p_('rename')==($orgName=p_('page_name'))){
  showMessage('ページ名は同じみたいです');
 } else {
  foreach ($PAGES_LIST as $i=>$M){
   list($uid,, $name, $enc, $ontop) = explode('|', $M);
   if($name==$orgName){
    $PAGES_LIST[$i] = $uid.'|'.time().'|'.($newName=p_('rename')).'|'.$enc.'|'.$ontop.'|';
   }
  }
  rewrite_ini($ini_file, $PAGES_LIST);
  update_cache(array('pages'));
  showMessage('ページ名を変更しました');
 } # else
}

if(p_('file_name') != '' && p_('newfname') != ''){ # ファイル名の変更
 $newName = p_('newfname');
 if(!preg_match('{^[a-zA-Z0-9_-]+$}', $newName)){
  showMessage('有効なファイル名ではないようです。');
 } else {
  $hits = preg_grep('{\|'.$newName.'\|}', $PAGES_LIST);
  if(!empty($hits)){
   refresh_page('admin.php?mode=pages&sub=modify');
   showMessage('そのファイル名はすでに存在します。別名を。');
  } else {
   foreach ($PAGES_LIST as $i=>$M){
    list($uid,, $name, $fname, $ontop) = explode('|', $M);
    if($uid == p_('UID')){
     $PAGES_LIST[$i] = $uid.'|'.time().'|'.$name.'|'.$newName.'|'.$ontop.'|';
     break;
    }
   }
   rewrite_ini($ini_file, $PAGES_LIST);
   if(is_file($_org=PAGE_DIR.url_encode($name).$page_ext) || is_file($_org=PAGE_DIR.$fname.$page_ext)){
    if(rename($_org, PAGE_DIR.$newName.$page_ext)){
     update_cache(array('pages'));
     showMessage('ファイル名を変更しました');
    } else showMessage('ファイル名の変更に失敗しました');
   }
  }
 }
}

if(p_('menu_rotate')!=''){ # メニュー表示順序変更実行
 $new_menulist = array();
 $menus = explode('`', p_('menu_rotate', 0));
 foreach ($menus as $m){
  foreach ($PAGES_LIST as $M){
   list($uid, $lastmod, $name, $fname, $ontop) = explode('|', $M);
   if($name==$m){
    $new_menulist[] = "$uid|$lastmod|$name|$fname|$ontop|";
   }
  }
 }
 rewrite_ini($ini_file, $new_menulist);
 update_cache(array('pages'));
 showMessage('ページ順序を変更しました');
}

if(v_('ontop') != ''){
 foreach ($PAGES_LIST as $i=>$M){
  list($uid,, $name, $fname, $ontop) = explode('|', $M);
  if($uid==g_('UID')){
   $PAGES_LIST[$i] = $uid.'|'.time().'|'.$name.'|'.$fname.'|'.g_('ontop').'|';
  } else $PAGES_LIST[$i] = preg_replace("{\|(0|1|2|3|)\|$}", '|0|', $PAGES_LIST[$i]);
 }
 rewrite_ini($ini_file, $PAGES_LIST);
 update_cache(array('pages'));
 refresh_page('admin.php?mode=pages&sub=modify', 1500);
 $msg = g_('ontop') > 0 ? '指定したページを「オントップ」に指定しました' : '「オントップ」を解除しました';
 showMessage($msg);
}

/* 実行ここまで */

$helperState = isset($_COOKIE['PPBLOG_HELPER_STATE']) ? $_COOKIE['PPBLOG_HELPER_STATE'] : 1;

if(is_file($ini_temp)){
 $temp_exists = true;
 include($ini_temp); # get array::$PAGE_TEMP
} else $temp_exists = false;

if(v_('sub')=='create'){ # 新規ページの作成
 if(ADMIN!=true) _header('admin.php');
 preg_match('{%_PAGES:(0|1):(.*?):(0|1)_%}', $_TEMPLATE_HTML, $mt);
 if(empty($mt)){
  $body .= '<h4 class="alert center" style="margin:30px auto;">テーマディレクトリのテンプレートHTMLに <strong>MENU</strong> が定義されていないようです。確認して下さい。</h4>'.NL;
  $menu = '';
 } else $menu = $mt[1];
 $body .= '
<ul class="p2em" style="width: 440px; display:'.($helperState?'block':'none').';">
 <li>新規ページの名前を入力してください。日本語もOKです</li>
 '.($menu==0?'<li style="color:crimson;">テンプレートHTMLで MENUエリアの表示がオフのようです。</li>':'').'
 <li>ここで作成したファイルはpagesディレクトリの中に保存されます。</li>
 <li>トップページのmenuエリアでそのページへのリンクが生成されるので，「自己紹介」や「このサイトについて」や「リンク集」
  などのページ名をどうぞ。</li>
</ul><p class="helper" onclick="toggleHelper(this);" title="説明を閉じる">　</p>
<form action="admin.php" method="post" style="width: 440px; margin: 1em auto 1em auto;">
 <fieldset>
 <legend>新しいページの作成</legend>
  <div class="hidden">
   <input type="hidden" name="mode" id="mode" value="pages" />
   <input type="hidden" name="sub" id="sub" value="create" />
   <input type="hidden" name="maxsize" id="maxsize" value="'.MAX_ISIZE.'" />
  </div>
  <div class="center">
   ページ名：<input type="text" name="new_page" value="" size="12" />
  <input type="image" src="Images/add2_1.png" title="追 加"
    style="vertical-align: middle;"
    onmouseover="this.src=\'Images/add2_2.png\';"
    onmouseout="this.src=\'Images/add2_1.png\'" alt="Add" />
  </div>
  <div class="center" style="width: 450px; margin: 2em auto;">
   <span style="cursor:pointer;"
    onclick="var c=d.getElementById(\'page-entry\');c.style.display=(c.style.display==\'none\'?\'block\':\'none\');"
    title="クリックでon/off切り替え">[登録されているページ一覧]</span>
   <ul id="page-entry" class="corner-play"
    style="width: 240px; text-align: left; border-color: orange; margin: 1em auto; padding: .5em 0 .5em 2em; list-style-type:square;">
 ';
 foreach ($PAGES_LIST as $i=>$M){
  list(,, $name,) = explode('|', $M);
  $body .= ' <li>'.$name.'</li>'.NL;
 }
 $body .= ' </ul>
 </fieldset>
</form>
 ';
 return $DIVISION['body'] .= $header.$body;
}

if(v_('sub')=='modify'){ # ページの編集・削除一覧
 if(empty($PAGES_LIST)){
  return $DIVISION['body'] .= '<p class="alert">まだページは作成されていません。新規に作成するなら<a href="admin.php?mode=pages&sub=create">ここ</a>からどうぞ</p>';
 }
 $body .= '
 <script type="text/javascript">/*<![CDATA[*/
/*]]>*/</script>
 <ul class="p2em" style="width: 500px;">
  <li>現在，以下のページが登録されています</li>
  <li>ページ名をクリックすると，そのページの編集画面に移ります</li>
  <li>ページ名・ファイル名の変更は，ページ毎に更新ボタンを押して下さい</li>
  <li>ファイル名に使える文字は，半角英数字および半角ハイフン(-)、半角アンダーバー(_)です</li>
  <li>「オントップ」にチェックして更新すると、その内容が常にブログのトップページで常に表示されます.
   「オントップ」には以下の２つのモードがあります
   <ol class="corner-play" style="background: ivory; margin: 1em auto;">
    <li style="background: none;">モード１： トップページにアクセスしたときのみ表示される</li>
    <li style="background: none;">モード２： 常にヘッダーエリアに表示される</li>
   </ol>
   <p style="color: firebrick;">なお、「モード2」の場合、サイドのMenuボックスにはページ名は表示されません.</p>
  </li>
 </ul>
 <table style="width: 90%; font-size: 100%; margin: auto;border: solid 1px #333; background:#fff;">
 <tr class="header"><th title="実際に表示される名前">ページ名</th><th>ページ名の変更</th><th>ファイル名の変更</th><th>最終更新日</th><th>オントップ</th><th>削除</th></tr>';
 foreach ($PAGES_LIST as $M){
  list($uid, $lastmod, $name, $fname, $ontop) = explode('|', $M);
  $body .= '<tr>
  <td><a href="admin.php?mode=pages&amp;EID='.$fname.'&amp;UID='.$uid.'">'.$name.'</a></td>
  <td>
   <form action="admin.php" method="post" style="display: inline;">
    <input type="hidden" name="mode" value="pages">
    <input type="hidden" name="sub" value="modify" />
    <input type="hidden" name="page_name" value="'.$name.'" />
    <input type="hidden" name="UID" value="'.$uid.'" />
    <input type="text" name="rename" size="10" value="'.$name.'" />
    <input type="image" src="Images/refresh1.png" title="ページ名を変更します"
    style="vertical-align: middle;"
    onmouseover="this.src=\'Images/refresh2.png\';"
    onmouseout="this.src=\'Images/refresh1.png\'" alt="Rename" />
   </form>
  </td>
  <td>
   <form action="admin.php" method="post" style="display: inline;">
    <input type="hidden" name="mode" value="pages">
    <input type="hidden" name="sub" value="modify" />
    <input type="hidden" name="file_name" value="'.$fname.'" />
    <input type="hidden" name="UID" value="'.$uid.'" />
    <input type="text" name="newfname" size="8" value="'.((!isset($fname)||!$fname)?url_encode($name):$fname).'" title="英数字とハイフン、アンダースコアのみ" />
    <input type="image" src="Images/refresh1.png" title="ファイル名を変更します"
    style="vertical-align: middle;"
    onmouseover="this.src=\'Images/refresh2.png\';"
    onmouseout="this.src=\'Images/refresh1.png\'" alt="Rename" />
   </form>
  </td>
  <td>'.date('Y-m-d H:i:s', $lastmod).'</td>
  <td>
   <select style="display: inline;" onchange="location=\'admin.php?mode=pages&amp;UID='.$uid.'&amp;ontop=\'+this.options[this.selectedIndex].value;this.blur();">
    <option value="0"'.(trim($ontop)==0?' selected="selected"':'').'>　 &mdash; </option>
    <option value="1"'.(trim($ontop)==1?' selected="selected"':'').'> モード１　</option>
    <option value="2"'.(trim($ontop)==2?' selected="selected"':'').'> モード２　</option>
   </select>
  </td>
  <td><a href="admin.php?mode=pages&amp;DID='.$fname.'&amp;UID='.$uid.'"
    onclick="return my_confirm(\'このページを\')">
    <img src="Images/trash.png" alt="Delete" title="削除" class="icon16x16" /></a></td>
  </tr>';
 }
 $body .= '</table>'.NL;
 return $DIVISION['body'] .= $header.$body;
}

if(v_('EID')){ # ページの編集
 if(ADMIN != TRUE) _header('admin.php');
 $fname = v_('EID');
 $target = PAGE_DIR.v_('EID').$page_ext;
 foreach ($PAGES_LIST as $M){
  list($uid,,,$_fname) = explode('|', $M);
  if($fname == $_fname) break; // get page's UID
 }
 if(!$temp_exists){
  $temp_there = '簡単なテンプレートは<a href="http://p2b.jp/demo/pagetemplate.inc">ここ</a>に置いています。ダウンロードするなりして入手されたら、
  <strong>onwer</strong>ディレクトリにアップして下さい。すると自動的にテンプレートファイルが認識されます。';
 } else $temp_there = '';
 $ip = getenv('REMOTE_ADDR') ? getenv('REMOTE_ADDR') : $_SERVER['REMOTE_ADDR'];
 $_ip = implode('', array_slice($sip=explode('.', $ip), 0, 2));
 $key = urlencode(my_encrypt(md5($_ip.OPASS)));
 $page_content = get_file_content($target);
 $rep = array("|"=>'&#124;', '%'=>'&#37;', "$"=>'&#36;', ","=>'&#44;', '\\'=>'&yen;');
 $page_content = htmlspecialchars(str_replace(array('`', '&#96;'), array(NL, '`'), str_replace(array_values($rep), array_keys($rep), $page_content)));
 if(g_('TMP')!=''){
  $tempName = url_decode(g_('TMP'));
  foreach($PAGE_TEMP as $T){
   $s = array();
   $s = explode("\n", $T);
   $is = array_shift($s);
   if($tempName== $is){
    $s = implode("\n", $s);
    $page_content = $s.NL.NL.$page_content;
    break;
   }
  } #foreach
 }
 $cmd = '
  <div class="center">
   <input type="submit" name="save" value=" 保 存 " accesskey="s" />
   <input type="button" class="pv-toggle" name="preview" onclick="preViewAreaOn();return false;" title="その場で見栄えのチェック" value="ローカルプレビュー" />
   <input type="button" name="view" onclick="showPage();return false;" title="実際の見栄えのチェックに" value=" サイト上 " />
  </div>
 ';
 $body = '
<script type="text/javascript">/*<![CDATA[*/
 ';
 $s = "var smilies = {\n";
 if(isset($_SMILIES)){
  foreach ($_SMILIES as $keyword=>$val) {$s .= "'$keyword':'$val',\n";}
 }
 $s = preg_replace("/,\n$/", "\n", $s);
 $s .= "};";
 //$body .= $s;
 $body .= '
 var smileyArray = [
 ';
 $i = 0;
 foreach ($_SMILIES as $txt=>$img){
  $imgn = preg_replace('|<img.+?src="smiley/([^"]*?)"[^\/]+? />|', '$1', $img);
  $_txt = preg_replace('/(\[|\/\])/', '', $txt);
  if($i==count($_SMILIES)-1){
   $body .= "'$imgn,$_txt,Editor.smiley(\'$txt\')'".NL;
  } else $body .= "'$imgn,$_txt,Editor.smiley(\'$txt\')',".NL;
  $i++;
 }
 $body .= ' ];
 function showPage(){
  if(!confirm("一旦保存しましたか？\n先に保存しないと修正が反映されません。")) return false;
  else window.location.href="index.php?mode=pages&aim='.v_('EID').'";
  return false;
 };
 var pva;
 function preViewAreaOn(){
  pva = o("#preViewArea");
  var closeButton = \'<div class="entry-submit" style="clear:both;margin: 0.5em;"><button type="button" onclick="pva.hide();return false;" title="プレビュー画面を閉じます">閉じる</button></div>\';
  pva.html(\'<div class="page-box">\' + o("#Page1").$.value + \'</div>\' + closeButton).show().view();
 }
/*]]>*/</script>
 <ul class="p2em" style="width: 540px; display:'.($helperState?'block':'none').';">
  <li>テンプレートから選ぶことも出来ます。'.$temp_there.'</li>
  <li>「ページ表示」は，プレビューではないので<strong>一旦保存してから</strong>見て下さい</li>
  <li>テンプレートから選んでも、テキストエリア内文章の最後に追加されるので作成していた内容は消えません。</li>
  <li>別のページを編集する：<select style="display:inline;" name="tpage"
   onchange="location=\'admin.php?mode=pages&amp;EID=\'+this.options[this.selectedIndex].value;this.blur();">
 ';
  foreach ($PAGES_LIST as $M){
   list($uid, , $_name, $_fname, $ontop) = explode('|', $M);
   if($_fname == $fname){
    $sel = ' selected="selected"';
    $name = $_name; $_uid = $uid;
    switch ($ontop){
     case 0 : $_ontop = '「なし」'; break;
     case 1 : $_ontop = '「モード１」'; break;
     case 2 : $_ontop = '「モード２」'; break;
    }
   } else $sel = '';
   $body .= '<option value="'.$_fname.'"'.$sel.'>'.$_name.'</option>'.NL;
  }
  $body .= '
  </select></li>
  <li>このページを削除したい場合は、<a href="admin.php?mode=pages&amp;DID='.$_fname.'&amp;UID='.$_uid.'">ここ</a>をクリック。</li>
  ';
  if($temp_exists){
   $body .= '<li style="margin-top: .4em;">テンプレートを読み込む：<select style="display:inline;" name="temp"
    onchange="location=\'admin.php?mode=pages&amp;EID='.v_('EID').'&amp;TMP=\'+this.options[this.selectedIndex].value;this.blur();">
    <option value="" selected="selected">テンプレート</option>
   ';
   foreach ($PAGE_TEMP as $T){
    $tempName = explode(NL, $T);
    $tempName = array_shift($tempName);
    $body .= '    <option value="'.url_encode($tempName).'">'.$tempName.'</option>'.NL;
   }
   $body .= '   </select></li>
   ';
  }
  $body .= '
 </ul><p class="helper" onclick="toggleHelper(this);" title="説明を閉じる">　</p>

<form id="writeForm" method="post" action="admin.php" style="width: 80%;">
 <fieldset>
 <legend>「'.$name.'」 の編集</legend>
 <ul class="p2em" style="margin-top: 0px;">
  <li>このページのファイル名は、<strong>'.$fname.'</strong> となっています。ファイル名の変更は<a href="admin.php?mode=pages&sub=modify">ここ</a>から。</li>
  <li>このページのオントップ設定は、<strong>'.$_ontop.'</strong>となっています。「オントップ」の説明や変更は<a href="admin.php?mode=pages&sub=modify">ここ</a>から。</li>
  <li>PHPを記述できたり(<strong>&lt;?php ... ?&gt;</strong>)、独自のスタイルタグ <strong>[style]...[/style]</strong> が使えます。</li>
 </ul>
 <div class="hidden">
  <input type="hidden" name="mode" id="mode" value="pages" />
  <input type="hidden" name="maxsize" id="maxsize" value="'.MAX_ISIZE.'" />
  <input type="hidden" name="UID" id="UID" value="'.$uid.'" />
  <input type="hidden" name="EID" id="EID" value="'.v_('EID').'" />
  <input type="hidden" name="pageName" value="'.v_('EID').'" />
 </div>
  <div id="toolBar"><script type="text/javascript">/*<![CDATA[*/writeToolBar('.ENABLE_BR.','.ENABLE_COMMENT.','.ENABLE_TRACKBACK.', 0);/*]]>*/</script></div>
  '.$cmd.'
  <div id="writing-area">
  <textarea style="background:#fff7ff;width:99%;margin:auto;"
   rows="30" cols="60" name="page_area" id="Page1">'.$page_content.'</textarea>
  </div><!--#writing-area-->
  '.$cmd.'
 </fieldset>
</form>
<div id="preViewArea" style="display: none;"></div>
<div id="upfiles"><iframe src="" title="upload.php?mode=pages&KY='.$key.'&UID='.$uid.'" frameborder="0"></iframe></div>
 ';
 return $DIVISION['body'] .= $header.$body;
}

if(g_('DID')){ # 指定ページの削除確認
 $page = PAGE_DIR.g_('DID').$page_ext;
 if(is_file($page)){
  $_page = get_file_content($page);
  $body = '<form action="admin.php" method="post">
  <div class="hidden">
   <input type="hidden" name="mode" value="pages" />
   <input type="hidden" name="maxsize" id="maxsize" value="'.MAX_ISIZE.'" />
   <input type="hidden" name="UID" id="UID" value="'.g_('UID').'" />
   <input type="hidden" name="delete" value="'.g_('DID').'" />
  </div>
  <p class="center"><span class="alert">再確認：「<strong>'.url_decode(g_('DID')).'</strong>」のページを削除しますか？</span></p>
  <div style="width: 250px; margin: auto; text-align: center;">
  <input type="image" src="Images/delete1.png"
    onmouseover="this.src=\'Images/delete2.png\';"
    onmouseout="this.src=\'Images/delete1.png\'" alt="Delete" title="削 除" />&nbsp;&nbsp;&nbsp;
  <input type="image" src="Images/reload1.png" onclick="history.go(-1);return false;"
    onmouseover="this.src=\'Images/reload2.png\';"
    onmouseout="this.src=\'Images/reload1.png\'" alt="Return" title="やっぱり削除しない" />
  </div>
  ';
  $body .= outputPage($_page, g_('DID'));
 } else $body = '<h4 class="alert" style="margin-top:100px;">どうもそのページはないようです。。</h4>'.NL;
 return $DIVISION['body'] .= $body.'</form>'.NL;
}

if(v_('sub')=='rotate'){ # メニューのページ順序設定
 $body = '
 <form action="admin.php" method="post" style="width: 440px; margin: 3em auto;">
 <fieldset><legend>メニューの順序設定</legend>
 <ul class="p2em" style="width: 380px;">
  <li>順序の変更は，まず移動させたいページ名を選択して，その状態で上下させて下さい。</li>
  <li>設定の保存は下の更新ボタンを押して下さい。その順序が反映されます。</li>
 </ul>

 <div class="hidden">
  <input type="hidden" name="mode" value="pages" />
  <input type="hidden" name="sub" value="rotate" />
  <input type="hidden" name="maxsize" id="maxsize" value="'.MAX_FSIZE.'" />
  <input type="hidden" name="menu_rotate" id="menu_rotate" />
 </div>
 <div style="margin: auto auto 2em auto; width:210px;">
 <script type="text/javascript">/*<![CDATA[*/
function UpDownList(dir){
 if(document.createElement){
  var ob = d.getElementById("menulist");
  var index = ob.selectedIndex;
  if(index < 0){ alert("まずページを選択して下さい。"); return;}
  if(index==0 && dir < 0) return;
  if(index==ob.options.length-1 && dir > 0) return;
  
  var opt = d.createElement("option");
  opt.value = d.getElementById(ob.options[index+dir].id).value;
  opt.text = d.getElementById(ob.options[index+dir].id).text;
  opt.id = d.getElementById(ob.options[index+dir].id).id;
  
  ob.removeChild(d.getElementById(ob.options[index+dir].id));
  
  if(client.MSIE){
   ob.add(opt, index);
  } else ob.insertBefore(opt, ob.options[index]);
 }
}
function _submit(){
 var menulist = d.getElementById("menulist");
 for (var i=0; i < menulist.options.length; i++){
  d.getElementById("menu_rotate").value += (menulist.options[i].text+"`");
 }
}
 /*]]>*/</script>

 <table>
 <tr>
 <td>
 <select size="'.count($PAGES_LIST).'" name="menulist" id="menulist" style="width:90%;">
 ';
 foreach($PAGES_LIST as $m){
  list($uid, , $name) = explode('|', $m);
  $body .= (' <option value="'.url_encode($name).'" id="d'.$uid.'">'. $name . '</option>' . NL);
 }
 $body .= '</select>
 </td>
 <td style="vertical-align:middle;width:10%;">
 <img src="Images/upward1.png" onclick="UpDownList(-1);" alt="Up" style="cursor:pointer;"
  onmouseover="this.src=\'Images/upward2.png\'" title="上に移動"
   onmouseout="this.src=\'Images/upward1.png\'" /><br />
 <img src="Images/downward1.png" onclick="UpDownList(1);" alt="Down" style="cursor:pointer;"
  onmouseover="this.src=\'Images/downward2.png\'" title="下に移動"
   onmouseout="this.src=\'Images/downward1.png\'" />
 </td>
 </tr>
 <tr class="center">
  <td>
   <input type="image" src="Images/reload1.png" onclick="_submit();return true;"
    onmouseover="this.src=\'Images/reload2.png\';"
    onmouseout="this.src=\'Images/reload1.png\'" alt="Refresh" title="更 新" />
  </td>
 </tr>
 </table>
 </div>
 </fieldset>
 </form>
 ';
 return $DIVISION['body'] .= $header.$body;
}



function outputPage($page, $pageID=''){ // 出力関数 _box の簡易版
 global $theme_dir, $ua, $DIVISION;
 if(preg_match_all('{<\?php(.+?)\?>}s', $page, $mt)){ // icluding php tags
  $BUFF = array();
  ob_start();
  $length = count($mt[0]);
  for($i = 0; $i < $length; $i++){
   $rep = array('&#36;'=>'$', '`'=>NL, '&#37;'=>'%', '&#44;'=>',', '&yen;'=>'\\', '&#96;'=>'`', '&#124;'=>'|');
   $php = str_replace(array_keys($rep), array_values($rep), $mt[1][$i]);
   if(eval($php) === FALSE){
    $BUFF[] = "ppBlog warning: parse error!";
   } else $BUFF[] = ob_get_contents();
   $page = str_replace($mt[0][$i], '$BUFF'.$i, $page);
  }
  ob_end_clean();
 }

 if(strstr($page, '[style]') && preg_match_all('{`?\[style\](.+?)\[/style\]`?}', $page, $mt)){
  $prev = '';
  $rep = array('`'=>NL, '&#37;'=>'%', '&#44;'=>',', NL=>NL.'  ', '&yen;'=>'\\');
  foreach ($mt[1] as $m){
   $prev .= str_replace(array_keys($rep), array_values($rep), $m);
   $prev = preg_replace('|([^{\n]+?)([,{])|me', "'   div.page-box '.trim('$1').('$2'=='{' ? ' ' : '').trim('$2').''", ltrim($prev));
  } 
  $page = str_replace($mt[0], '', $page);
  $DIVISION['style'] = NL.' <style type="text/css">'.NL.'  '.trim($prev).NL.' </style>'.NL;
 }

 if(preg_match_all('{<img src="([^"]+?)" alt="([^"]*?)"(.*?)/>}i', $page, $mt)){ // icluding image-tags
  $length = count($mt[0]);
  for($i=0; $i < $length; $i++){
   if(!is_file(PATH.$mt[1][$i])){
    $page = str_replace($mt[0][$i], '<p class="al-right"><img src="Images/notfound.png" alt="404 File Not Found" /></p>', $page);
   } else { // E
    $id = preg_replace('|.+?/(\d+?)_.+$|', '\\1', $mt[1][$i]);
    $_img = basename($imgf=$mt[1][$i]); $photo_effect = trim($mt[3][$i]) != '' ? 1 : 0;
    $imgName = str_replace($id.'_', '', $_img);
    list($fs,$w,$h,$tw,$th,$alt,$align,$shadow,$border,$caption,$polaroid) = explode(':', $mt[2][$i]);
    if($border){
     $polaroid = trim($polaroid) == '' ? PICTURE_POLAROID : $polaroid;
    } else $polaroid = 0;
    if($polaroid && $shadow && $border && $caption != ''){
     $_wrap = '</div></div>'.NL; $_div = NL;
    } else { $_wrap = '</div>'.NL; $_div = '</div>';}
    $_border = ($photo_effect || $border) ? ' ' : ' class="borderless" ';
    $_shadow = ($shadow && !$photo_effect) ? ' <div class="shadow">' : ' <div class="noshadow">';
    $fs = ($fs > 1024) ? sprintf('%01.2f', $fs/1024).'MB' : $fs.'KB';
    $info = '　　ファイル名: '.$imgName.'&#13;&#10;ファイルサイズ: '.$fs;
    $thumb = is_file(IMG_DIR.THUMB2.$_img) ? IMG_DIR.THUMB2.$_img : 'Images/notfound.png';
    $img = ($tw * $th > 0) ? 'src="'.$thumb.'"' : 'src="'.IMG_DIR.$_img.'"';
    $wrapw = $tw > 0 ? $tw : $w; $wrapw = $border ? $wrapw + 9 : $wrapw;
    $photocap = $caption=='' ? '<hr class="clear" />' : ' <div class="photo-caption" style="width: '.($wrapw - 9).'px;">'.$caption.'</div>';
    $div = NL.'<div class="'.(!$photo_effect ? ($_div == NL ? 'polaroid' : 'photo').' ' : '');
    $wrap = $div.'al-'.$align.'" style="width: '.$wrapw.'px;">'.NL.$_shadow;
    if($tw > 0){ // resized image is.
     if($_border == ' '){
      $rest = strstr($mt[3][$i], 'class="') ? preg_replace('{class="(.+?)"}', 'class="\\1 resized"', $mt[3][$i]) : $mt[3][$i].' class="resized"';
     } else {
      $_border = ' ';
      $rest = strstr($mt[3][$i], 'class="') ? preg_replace('{class="(.+?)"}', 'class="\\1 resized"', $mt[3][$i]) : $mt[3][$i].' class="borderless resized"';
     }
     $page = str_replace($mt[0][$i],
      $wrap.'<img'.$_border.$img.' title="'.$info.'&#13;&#10;&#13;&#10;　→クリックで元のサイズを表示" width="'.$tw.'" height="'.$th.'" alt="'.$alt.'" onclick="imagePop(event, \''.IMG_DIR.$_img.'\', '.$w.', '.$h.');"'.$rest.' />'.$_div.$photocap.$_wrap.'`', $page);
    } else { // $tw == 0; resized image is NOT.
     $page = str_replace($mt[0][$i],
      $wrap.'<img'.$_border.$img.' title="'.$info.'" width="'.$w.'" height="'.$h.'" alt="'.$alt.'"'.$mt[3][$i].' />'.$_div.$photocap.$_wrap.'`', $page);
    }
   } // E
  }
 }
 // 動画ファイル表示処理
 if(preg_match_all('{\[media:([^:]+?):([^:]+?)(:[^\]]+?|)/\]}', $page, $movs)){
  $length = count($movs[0]);
  $movies = '<div class="attached">'.NL;
  for($i=0; $i<$length; $i++){
   $_file = $movs[1][$i];
   $_filetype = isset($movs[3][$i]) ? str_replace(':', '', $movs[3][$i]) : 'video/3gpp';
   $_fname = str_replace($id.'_', '', $_file);
   $_fsize = $movs[2][$i].'KB';
   $_movf = MEDIA_DIR.$_file;
   if(preg_match('/mode=show|UID/', QUERY)){
    if(strstr($_filetype, '3gp')){ # 3gpp
     $clsid = preg_match('/msie|opeera/i', $ua) ?
    'classid="clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B"
     codebase="http://www.apple.com/qtactivex/qtplugin.cab"' : 'type="video/3gpp" data="'.$_movf.'"';
    } else $clsid = 'type="'.$_filetype.'" data="'.$_movf.'"';
    $movies .= '
     <div style="margin:auto;width:145px;">
     <h6 title="動画へ直リンク">::<a href="'.$_movf.'">'.$_fname.'('.$_fsize.')</a>::</h6>
     <object '.$clsid.' width="176" height="160"> 
      <param name="src" value="'.$_movf.'" />
      <param name="autoplay" value="false" />
     </object>
     </div>
    ';
   } else {
    $movies .= 'Movie:<a href="'.$_movf.'" title="'.$_fname.' '.$_fsize.'：新しいウィンドウで開きます"
     onclick="window.open(this.href,\'\');return false;"><img src="Images/movie.png" style="margin:0;vertical-align:middle;" alt="" /> '.$_fname.'</a>&nbsp;'.NL;
   }
   $page = str_replace($movs[0][$i], '', $page);
  }
  $movies .= '</div>'.NL;
  $page = str_replace('<!--END-->','<!--END-->'.$movies, $page);
 }
 
 // 添付ファイル表示処理
 if(preg_match_all('{\[file:([^:]+?):([^/]*?)/\]}', $page, $files)){
  $attached = '<div class="attached">'.NL.'添付ファイル： ';
  $length = count($files[0]);
  for($i=0; $i<$length; $i++){
   $_file = $files[1][$i];
   $_fname = str_replace($id.'_', '', $_file);
   $_fsize = $files[2][$i].'KB';
   $attached .= $_fname.'<a href="index.php?mode=download&amp;aim='.$_file.'"><img src="Images/attached.png" style="margin:0;vertical-align:middle;" title="FileName: '.$_fname.'&#13;&#10;  FileSize: '.$_fsize.'" alt="" /></a>&nbsp;'.NL;
   $page = str_replace($files[0][$i],'',$page);
  }
  $attached .= '</div>'.NL;
  $page = str_replace('<!--END-->','<!--END-->'.$attached, $page);
 }

 $extlink = (ENABLE_NEW_WINDOW) ?
  ' title="新しいウィンドウで開きます" onclick="window.open(this.href,\'\');return false;"' : '';
 if(ENABLE_NEW_WINDOW){
  $page = preg_replace('{<a href="([^"]+?)"(.*?)>(.+?)</a>}', '<a href="$1"'.$extlink.'$2>$3</a>', $page);
 }
 $page = preg_replace('{'.V_URL.'}','<a'.$extlink.' href="$1$2">$1$2</a>', $page);
 
 // アマゾンアソシエイト処理
 if(USE_AMAZON_ASSOCIATE){
  $page = preg_replace('{<!--AMAZON:(.+?)--><a href="(.+?)" title="(?:.+?):(.+?)">(.+?)</a><!--/AMAZON:\\1-->}e',
  "'<div class=\"amazon-box\">'.getAwsItem(\"$1\", \"$3\", \"$4\", \"$2\").'<hr class=\"clear\" /></div>`'",  $page);
 }

 // グーグル検索処理
 $page = preg_replace('{\[g\](.*?)\[\/g\]}i',
        '<a href="#mose" title="グーグルで検索" onclick=\'googleIt("$1");return(false);\' onkeypress=\'return(ture);\'>$1</a><sup class="google-it">G</sup>', $page);
 // Wikipedia検索処理
 $page = preg_replace('{\[w\](.*?)\[/w\]}i',
        '<a href="#mose" title="Wikipediaで検索" onclick=\'wikipediaIt("$1");return(false);\' onkeypress=\'return(ture);\'>$1</a><span class="google-it">W</span>', $page);
 // スター評価処理
 if(preg_match_all('{\[stars:(\d+?(\.5|))/(\d+?)\]}', $page, $star)){
  $len = sizeof($star[0]);
  for ($j = 0; $j < $len; $j++){
   $stars = '<span class="stars" title="'.$star[3][$j].' 点中 '.$star[1][$j].' 点">';
   for ($i=0; $i<floor($star[1][$j]); $i++) $stars .= '<img src="'.$theme_dir.'Images/star.png" alt="" />';
   $stars .= !empty($star[2][$j]) ? '<img src="'.$theme_dir.'Images/star-half.png" alt="" />' : '';
   for ($i=0; $i<(int)($star[3][$j]-$star[1][$j]); $i++) $stars .= '<img src="'.$theme_dir.'Images/star-null.png" alt="" />';
   $stars .= '</span>'.NL;
   $page = str_replace($star[0][$j], $stars, $page);
  }
 }
 $page = my_parser('`'.$page, ENABLE_BR);
 // スマイリー変換f$date
 if(USE_SMILEY) $page = convert_smilies($page);
 $edit = (ADMIN==TRUE && isOwnerLoggedIn()) ?
  '<div style="text-align: right; margin: 1em; padding-right: 3em;">
   <a href="admin.php?mode=pages&amp;EID='.$pageID.'"><img src="'.$theme_dir.'Images/edit.png" title="ページを編集します" alt="" /></a></div>' : '';
 if(isset($BUFF)){
  for ($i = 0; $i < count($BUFF); $i++){
   $page = str_replace('$BUFF'.$i, $BUFF[$i], $page);
  }
 }
 return $edit.'<div class="page-box">'.$page.'</div><hr class="clear" />'.$edit;
}

function tempSelector(){
 
}
?>
